import tensorflow.keras
from PIL import Image, ImageOps
import numpy as np
import cv2
# import os

str = ''
faceCascade= cv2.CascadeClassifier("Resources/haarcascade_frontalface_default.xml")

np.set_printoptions(suppress=True)
model = tensorflow.keras.models.load_model('Resources/keras_model.h5')
data = np.ndarray(shape=(1, 224,224, 3), dtype=np.float32)


cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)
while True:
    success,img = cap.read()
  
    cv2.imshow("webcam", img)
    faces = faceCascade.detectMultiScale(img,1.1,4)
    
    
    for (x,y,w,h) in faces:
        crop_img = img[y:y+h, x:x+w]
        crop_img = cv2.resize(crop_img,(224,224))
        normalized_image_array = (crop_img.astype(np.float32) / 127.0) - 1    
        data[0] = normalized_image_array    
        prediction = model.predict(data)
        print(prediction)
        if prediction[0][0] > prediction[0][1]:
            str = 'Mask'
        else:
            str = 'Without-mask'


        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        cv2.putText(img,str,(x,y),cv2.FONT_HERSHEY_COMPLEX,1,(0,150,0),1)
        cv2.imshow("Result", img)



    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
